package com.grupogimeno.agenda;

import java.util.Scanner;

public class AgendaElectronica {
    private AgendaEx agenda;   

    private AgendaElectronica() {
	agenda= new AgendaEx();   
    }
    
    public static void main(String[] args) {
	new AgendaElectronica().menu();	
    }
    
    private void menu() {	  
	System.out.println("1- Anyadir Persona");
	System.out.println("2- Anyadir masivamente");
	System.out.println("3- Modificar");
	System.out.println("4- Eliminar");
	System.out.println("5- Buscar");
	System.out.println("6- Visualizar todos");
	System.out.println("7- Extraer XML");
	System.out.println("8- Anyadir Empresa");
	System.out.println("9- Buscar por direccion");
	System.out.println("0- Salir");
	
	while (true) {
	    Scanner scanner = new Scanner(System.in);
            System.out.print("Seleccione opcion: ");
            
            int opcion= scanner.nextInt();
	    switch(opcion) {
	    case 1: anyadirPersonaEx();break;
	    case 2: agenda.anyadirMasivamente(); break;
	    case 3: modificar(); break;
	    case 4: eliminar(); break;
	    case 5: busqueda(); break; 
	    case 6: visualizarTodos(); break;
	    case 7: extraerXML(); break;
	    case 8: anyadirEmpresa();break;
	    case 9: busquedaPorDireccion(); break; 
	    case 0: {System.out.print("ADIOS!!!"); return; }
	    }
	}
	
    }

    private void busquedaPorDireccion() {
	Scanner scanner = new Scanner(System.in);
	System.out.print("Direccion a buscar: ");
	String direccion = scanner.nextLine();
	
	if (agenda.buscarPorDireccion(direccion)==null) {
	    System.out.println("Entrada no encontrada.");
	} else {
	    System.out.println("Entrada ENCONTRADA.");
	}	
    }

    private void anyadirPersonaEx() {
	Scanner scanner = new Scanner(System.in);
	
	System.out.print("Nombre: ");
	String nombre = scanner.nextLine();

	System.out.print("Apellidos: ");
	String apellidos = scanner.nextLine();

	System.out.print("NIF: ");
	String nif = scanner.nextLine();

	System.out.print("Direccion: ");
	String direccion = scanner.nextLine();

	agenda.anyadirPersonaEx(nombre,apellidos,nif,direccion,"f");
    }

    private void anyadirEmpresa() {
 	Scanner scanner = new Scanner(System.in);
 	
 	System.out.print("Nombre: ");
 	String nombre = scanner.nextLine();

 	System.out.print("NIF: ");
 	String nif = scanner.nextLine();

 	agenda.anyadirEmpresa(nombre, nif);
     }

    private void modificar() {
	Scanner scanner = new Scanner(System.in);
	System.out.print("Entrada a modificar: ");
	int numEntrada=scanner.nextInt();
	scanner.nextLine();
	
	if(numEntrada>agenda.getNumEntradas()) {
	    System.out.println("Entrada no encontrada.");
	    return;
	}
	Entrada p= agenda.buscar(numEntrada);
	if(p==null) {
	    System.out.println("Entrada no encontrada.");
	    return;
	}
	
	System.out.println("Nombre antiguo: "+p.getNombre());
	System.out.print("Nombre nuevo: ");
	String nombre = scanner.nextLine();

	p.setNombre(nombre);
	
    }
    
    private void eliminar() {
 	Scanner scanner = new Scanner(System.in);
 	System.out.print("Entrada a eliminar: ");
 	int numEntrada=scanner.nextInt();
 	scanner.nextLine();
 	
 	if(numEntrada>agenda.getNumEntradas()) {
 	    System.out.println("Entrada no encontrada.");
 	    return;
 	}
 	Entrada p= agenda.buscar(numEntrada);
 	if(p==null) {
 	    System.out.println("Entrada no encontrada.");
 	    return;
 	}
 	
 	agenda.eliminar(numEntrada);
 	
 	System.out.println("Entrada eliminada.");	
     }
    
    private void busqueda() {
	Scanner scanner = new Scanner(System.in);
	System.out.print("Nombre a buscar: ");
	String nombre = scanner.nextLine();
	
	if (agenda.buscar(nombre)==null) {
	    System.out.println("Entrada no encontrada.");
	} else {
	    System.out.println("Entrada ENCONTRADA.");
	}
    }

    private void visualizarTodos() {
	Entrada entrada;
	
 	for(int i=0;i<agenda.getNumEntradas();i++) {
 	   entrada=agenda.obtenerEntrada(i);
 	    if (entrada!=null) {
 		System.out.println("Entrada "+ i + ":" + entrada.getNombre());
 	    }	
        }
    }
    
    private void extraerXML() {
	System.out.println(GeneradorXML.generar(agenda));
    }
}